home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / amiga / uae-0.7.0b2 / src / include / readcpu.h < prev    next >
C/C++ Source or Header  |  1998-01-20  |  3KB  |  97 lines

  1. ENUMDECL {
  2.   Dreg, Areg, Aind, Aipi, Apdi, Ad16, Ad8r,
  3.   absw, absl, PC16, PC8r, imm, imm0, imm1, imm2, immi, am_unknown, am_illg
  4. } ENUMNAME (amodes);
  5.  
  6. ENUMDECL {
  7.     i_ILLG,
  8.  
  9.     i_OR, i_AND, i_EOR, i_ORSR, i_ANDSR, i_EORSR,
  10.     i_SUB, i_SUBA, i_SUBX, i_SBCD,
  11.     i_ADD, i_ADDA, i_ADDX, i_ABCD,
  12.     i_NEG, i_NEGX, i_NBCD, i_CLR, i_NOT, i_TST,
  13.     i_BTST, i_BCHG, i_BCLR, i_BSET,
  14.     i_CMP, i_CMPM, i_CMPA,
  15.     i_MVPRM, i_MVPMR, i_MOVE, i_MOVEA, i_MVSR2, i_MV2SR,
  16.     i_SWAP, i_EXG, i_EXT, i_MVMEL, i_MVMLE,
  17.     i_TRAP, i_MVR2USP, i_MVUSP2R, i_RESET, i_NOP, i_STOP, i_RTE, i_RTD,
  18.     i_LINK, i_UNLK,
  19.     i_RTS, i_TRAPV, i_RTR,
  20.     i_JSR, i_JMP, i_BSR, i_Bcc,
  21.     i_LEA, i_PEA, i_DBcc, i_Scc,
  22.     i_DIVU, i_DIVS, i_MULU, i_MULS,
  23.     i_ASR, i_ASL, i_LSR, i_LSL, i_ROL, i_ROR, i_ROXL, i_ROXR,
  24.     i_ASRW, i_ASLW, i_LSRW, i_LSLW, i_ROLW, i_RORW, i_ROXLW, i_ROXRW,
  25.     i_CHK,i_CHK2,
  26.     i_MOVEC2, i_MOVE2C, i_CAS, i_CAS2, i_DIVL, i_MULL,
  27.     i_BFTST,i_BFEXTU,i_BFCHG,i_BFEXTS,i_BFCLR,i_BFFFO,i_BFSET,i_BFINS,
  28.     i_PACK, i_UNPK, i_TAS, i_BKPT, i_CALLM, i_RTM, i_TRAPcc, i_MOVES,
  29.     i_FPP, i_FDBcc, i_FScc, i_FTRAPcc, i_FBcc, i_FSAVE, i_FRESTORE,
  30.     i_MMUOP
  31. } ENUMNAME (instrmnem);
  32.  
  33. extern struct mnemolookup {
  34.     instrmnem mnemo;
  35.     const char *name;
  36. } lookuptab[];
  37.  
  38. ENUMDECL {
  39.     sz_byte, sz_word, sz_long
  40. } ENUMNAME (wordsizes);
  41.  
  42. ENUMDECL {
  43.     fa_set, fa_unset, fa_zero, fa_one, fa_dontcare, fa_unknown, fa_isjmp
  44. } ENUMNAME (flagaffect);
  45.  
  46. ENUMDECL {
  47.     fu_used, fu_unused, fu_maybecc, fu_unknown, fu_isjmp
  48. } ENUMNAME (flaguse);
  49.  
  50. ENUMDECL {
  51.     bit0, bit1, bitc, bitC, bitf, biti, bitI, bitj, bitJ, bitk, bitK,
  52.     bits, bitS, bitd, bitD, bitr, bitR, bitz, lastbit
  53. } ENUMNAME (bitvals);
  54.  
  55. struct instr_def {
  56.     unsigned int bits;
  57.     int n_variable;
  58.     char bitpos[16];
  59.     unsigned int mask;
  60.     int plevel;
  61.     struct {
  62.     unsigned int flaguse:3;
  63.     unsigned int flagset:3;
  64.     } flaginfo[5];
  65.     unsigned char sduse;
  66.     const char *opcstr;
  67. };
  68.  
  69. extern struct instr_def defs68k[];
  70. extern int n_defs68k;
  71.  
  72. extern struct instr {
  73.     unsigned int mnemo:8;
  74.     unsigned int cc:4;
  75.     unsigned int plev:2;
  76.     unsigned int size:2;
  77.     unsigned int smode:5;
  78.     unsigned int stype:3;
  79.     unsigned int dmode:5;
  80.     unsigned int suse:1;
  81.     unsigned int duse:1;
  82.     unsigned int unused1:1;
  83.     int flagdead:8, flaglive:8;
  84.     unsigned char dreg;
  85.     unsigned char sreg;
  86.     signed char dpos;
  87.     signed char spos;
  88.     unsigned char sduse;
  89.     long int handler;
  90. } *table68k;
  91.  
  92. extern void read_table68k (void);
  93. extern void do_merges (void);
  94. extern int get_no_mismatches (void);
  95. extern int nr_cpuop_funcs;
  96.  
  97.